package com.carrental.crm.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.carrental.crm.dto.MarketingCampaignDTO;
import com.carrental.crm.entity.MarketingCampaign;
import com.carrental.crm.vo.MarketingCampaignVO;

/**
 * 营销活动服务接口
 */
public interface MarketingCampaignService extends IService<MarketingCampaign> {

    /**
     * 创建营销活动
     *
     * @param marketingCampaignDTO 营销活动DTO
     * @return 营销活动ID
     */
    Long createMarketingCampaign(MarketingCampaignDTO marketingCampaignDTO);

    /**
     * 更新营销活动
     *
     * @param marketingCampaignDTO 营销活动DTO
     * @return 是否成功
     */
    boolean updateMarketingCampaign(MarketingCampaignDTO marketingCampaignDTO);

    /**
     * 根据ID获取营销活动详情
     *
     * @param id 营销活动ID
     * @return 营销活动VO
     */
    MarketingCampaignVO getMarketingCampaignById(Long id);

    /**
     * 分页查询营销活动列表
     *
     * @param page      分页参数
     * @param name      活动名称
     * @param type      活动类型
     * @param status    活动状态
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 营销活动VO分页
     */
    Page<MarketingCampaignVO> pageMarketingCampaigns(Page<MarketingCampaign> page, String name, Integer type, Integer status, String startTime, String endTime);

    /**
     * 获取进行中的营销活动列表
     *
     * @return 营销活动VO列表
     */
    Page<MarketingCampaignVO> getOngoingMarketingCampaigns(Page<MarketingCampaign> page);

    /**
     * 更新营销活动状态
     *
     * @param id     营销活动ID
     * @param status 活动状态
     * @return 是否成功
     */
    boolean updateMarketingCampaignStatus(Long id, Integer status);

    /**
     * 增加参与人数
     *
     * @param id 营销活动ID
     * @return 是否成功
     */
    boolean incrementParticipantCount(Long id);
} 